FINAL SOLUTION: No Artifacts Approach
🔴 The Real Problem
You’re absolutely right! The split-job approach I initially suggested still uses artifacts, which means:
- ❌ Still counts against your storage quota
- ❌ Can still hit quota limits if workflow runs frequently
- ❌ Only reduces the problem, doesn’t solve it
✅ The Real Solution: ZERO Artifacts
You need a workflow that doesn’t use artifacts at all. Here are your options:
🎯 Recommended Solution Options
Option 1: Use Quarto’s Built-in Publish ⭐ EASIEST & BEST
File: quarto-publish.simple.yml
How it works:
Render → Push directly to gh-pages branch
(No artifacts, no GitHub Actions Pages system)
Command:
quarto publish gh-pages --no-prompt --no-browserPros:
- ✅ ZERO artifacts - No storage quota used
- ✅ Simplest solution - One command does everything
- ✅ Official Quarto method
- ✅ Works natively on Windows
- ✅ Handles all git operations automatically
Cons:
- Uses
contents: writepermission (needs to push to gh-pages branch)
GitHub Pages Setup Required:
- Go to: Settings → Pages
- Source: Deploy from a branch
- Branch:
gh-pages/root
Option 2: Manual Git Push to gh-pages ⭐ FULL CONTROL
File: quarto-publish.direct.yml
How it works:
Render → Manually push docs to gh-pages branch
(No artifacts, custom deployment logic)
Pros:
- ✅ ZERO artifacts
- ✅ Full control over deployment process
- ✅ Works natively on Windows
- ✅ Can customize deployment logic
Cons:
- More complex workflow script
- More git commands to maintain
Option 3: Current Approach (NOT RECOMMENDED)
File: quarto-publish.win64.yml (current)
Problems:
- ❌ Uses
upload-artifact@v4(counts against quota!) - ❌ Creates artifact on every run
- ❌ Even with 1-day retention, can accumulate if you run frequently
- ❌ This is what’s causing your quota issue
📊 Comparison Table
| Approach | Artifacts Used? | Quota Impact | Works on Windows? | Complexity |
|---|---|---|---|---|
| Quarto built-in | ❌ None | ✅ Zero | ✅ Yes | ⭐ Simple |
| Manual gh-pages push | ❌ None | ✅ Zero | ✅ Yes | ⭐⭐ Medium |
| Split job (current) | ✅ Yes (1 day) | ⚠️ Low but not zero | ✅ Yes | ⭐⭐⭐ Complex |
| Single job with Pages API | ✅ Yes | ❌ High | ❌ Needs WSL | ⭐⭐⭐ Complex |
🚀 Implementation Steps
To Use Option 1 (Quarto Built-in - RECOMMENDED):
Disable current workflow:
# Rename to disable it cd "E:\dev.darioa.live\darioairoldi\Learn\.github\workflows" Rename-Item "quarto-publish.win64.yml" "quarto-publish.win64.yml.disabled"Enable the simple workflow:
# It's already created as quarto-publish.simple.yml # Just commit and pushConfigure GitHub Pages:
- Go to: https://github.com/darioairoldi/Learn/settings/pages
- Source: Deploy from a branch
- Branch: gh-pages / root
- Save
Commit and test:
cd "E:\dev.darioa.live\darioairoldi\Learn" git add .github/workflows/ git commit -m "Switch to Quarto built-in publish (no artifacts)" git push
🎯 Why Quarto Built-in is Best
The quarto publish gh-pages command is specifically designed for this use case:
# This ONE command does everything:
quarto publish gh-pages --no-prompt --no-browserWhat it does internally:
- Renders your Quarto project
- Creates/updates the
gh-pagesbranch - Pushes the rendered content
- All without using any GitHub Actions artifacts!
It’s literally the official way to publish Quarto to GitHub Pages.
🧹 Cleaning Up After Switch
After switching to the no-artifact approach:
Run the cleanup script to remove existing artifacts:
cd "E:\dev.darioa.live\darioairoldi\Learn\20251018 ISSUE Github action fails with Artifact storage quota has been hit" .\cleanup-artifacts.ps1Monitor that no new artifacts are created:
- Go to: https://github.com/darioairoldi/Learn/actions/artifacts
- Should remain empty after workflows run
📝 Quick Decision Guide
Use Quarto Built-in (quarto-publish.simple.yml) if:
- ✅ You want the simplest solution
- ✅ You’re okay with
quarto publishhandling everything - ✅ You want the official Quarto method
- ✅ You want ZERO artifacts
Use Manual Push (quarto-publish.direct.yml) if:
- ✅ You need custom deployment logic
- ✅ You want more control over the git operations
- ✅ You want ZERO artifacts
Don’t use the split-job approach if:
- ❌ You’re hitting artifact storage quota limits
- ❌ You run workflows frequently
- ❌ You want to avoid artifacts completely
✅ Summary
The issue with the current approach:
- Still uses artifacts (even with 1-day retention)
- Can accumulate if workflow runs frequently
- Not a true solution to the quota problem
The real solution:
- Use
quarto publish gh-pagescommand - No artifacts at all
- Simple, official, and works perfectly on Windows
Next step:
- Replace
quarto-publish.win64.ymlwithquarto-publish.simple.yml - Configure GitHub Pages to use
gh-pagesbranch - Done! No more quota issues, ever.
Ready to implement? I recommend Option 1 (Quarto built-in). 🎉